iT邦幫忙

2025 iThome 鐵人賽

DAY 26
0
AI & Data

AI-ction!我的超級瑪莉歐闖關歷險記:用自動化破關,收集時間金幣系列 第 26

Day 26:挑戰日誌 —— ChatBot的智慧航線

  • 分享至 

  • xImage
  •  

昨天,我們的 ChatBot 已經能跟我們互動、回應粉絲的問題。
不過實測卻發現,它的記憶力有限,上一秒才剛聊過它下一秒就忘了。

探險者:這兩處(ie.國家公園)主要的差異是?
ChatBot 卻回應完全不相干的猴廟及杜巴廣場...

https://ithelp.ithome.com.tw/upload/images/20251011/20178812BXcnv7wmyo.png

今天,我們要讓 ChatBot 從被動回覆進化為主動互動,向智慧助手邁進。讓它更聰明、更實用、更懂得看眼色——不只是答題,更能記住聊天的紀錄、洞察字裡行間的情緒,避免它變成小白目一個。

今天的冒險挑戰

  • 多輪對話記憶

透過 conversation_historyemotion_log 為它加上記憶功能,記錄每輪使用者的問題與 ChatBot 的回覆,讓 ChatBot 能基於上下文調整回覆,對話更自然,也方便後續個性化優化。

  • 情緒細分類

將原本正/中/負加上更精細的情緒粒度,進化成:興奮、滿意、中立、失望、生氣。使用對多語系、長文本更友好的 nlptown/bert-base-multilingual-uncased-sentiment 模型,洞察使用者心情

小技巧:情緒分析環節容易爆token,不小心就超過模型上限,可以透過 長文本切段 或限制 pipeline 的最大 token 來解。

emotion_analyzer = pipeline(
    "sentiment-analysis",
    model="nlptown/bert-base-multilingual-uncased-sentiment",
    truncation=True,    # 自動截斷超過模型最大 token 的文本 
    max_length=512,     # 指定最大 token 長度
)

def analyze_emotion(text):
    """分析文字情緒,回傳標籤與信心值"""
    result = emotion_analyzer(text[:2000])[0]  # 避免極長文本,截取前2000字
    return result['label'], result['score']

每次對話 ChatBot 都會記錄使用者心情,計算累計的情緒趨勢並視覺化,並提供信心值作為判斷準則參考。

🧠 回覆情緒:4 stars(信心值 0.335)
📊 當前情緒趨勢: {'5 stars': 5, '4 stars': 8}

成果呈現

探險者詢問:剛聊到哪呢?
ChatBot 可以馬上承接話題:
我們上次主要聊到了兩個尼泊爾非常值得一訪的景點,都建議您可以列入「必訪清單」

https://ithelp.ithome.com.tw/upload/images/20251011/20178812vpHSpMEARZ.png

將情緒紀錄畫成折線圖,觀察使用者互動情緒變化。

https://ithelp.ithome.com.tw/upload/images/20251010/20178812lwkauma39g.png

今天解鎖的新技能:

🍄 多輪對話記憶:理解上下文,對話更自然。
🍄 情緒細分類與趨勢觀察:分析使用者心情,生成折線圖。

📓 小結:

我們今天讓 ChatBot 能夠記住對話歷史、理解情緒、承接上下文,從單純的「回答問題」進化成初步的「智慧互動助手」。不過,它現在仍侷限在內部測試環境,還沒真正面對外部使用者。

下一步,我們的挑戰是:把 ChatBot 帶到對外聊天介面,讓粉絲可以透過熟悉的平台直接互動,與 ChatBot 即時對話、提問、獲得建議,真正體驗「互動式資料夥伴」的魔法。


上一篇
Day 25:挑戰日誌 —— ChatBot的語意之旅
下一篇
Day 27:挑戰日誌 —— ChatBot的啟航之鑰
系列文
AI-ction!我的超級瑪莉歐闖關歷險記:用自動化破關,收集時間金幣30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言